package Exercise;
//3个窗口卖100张票
/*存在线程安全问题，待解决*/
//已经解决 通过 同步代码块解决继承的多线程安全问题
public class windowTest {
    public static void main(String[] args) {
        window1 t1 = new window1();
        window1 t2 = new window1();
        window1 t3 = new window1();
        t1.setName("窗口一");
        t2.setName("窗口二");
        t3.setName("窗口三");

        t1.start();
        t2.start();
        t3.start();
    }
}

class window1 extends Thread {
    //若不用static 可用 Runnable方法来创建线程
    private static int TICKTE = 100;
    private static Object obj = new Object();
    public void run() {
        while (true) {
            synchronized(window1.class){ //window1.class也是一个对象 类也是对象
            //synchronized (obj) { //这是不能用this 讲obj换掉 此时this代表t1，t2，t3
                if (TICKTE > 0) {
                    System.out.println(getName() + ":卖票,票号为:" + TICKTE);
                    TICKTE--;
                } else {
                    break;
                }
            }
        }
    }
}


